package com.ruoyi.generator.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;

import javax.validation.Valid;
import java.util.List;

/**
 * 单设计_配置对象 sys_from_build_config
 *
 * @author XL
 * @date 2022-08-05 12:01:23
 */
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler"})
@Data
public class FromBuildConfig extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    @JsonProperty(value = "id")
    private Long id;

    /**
     * 表单设计KEY
     */
    @Excel(name = "表单设计KEY")
    @JsonProperty(value = "buildKey")
    private String buildKey;

    /**
     * 表单项UUID
     */
    @Excel(name = "表单项UUID")
    @JsonProperty(value = "formUuid")
    private String formUuid;

    /**
     * 路由方式__1字段_2组件
     */
    @Excel(name = "路由方式__1字段_2组件")
    @JsonProperty(value = "routerType")
    private String routerType;

    /**
     * 组件路由
     */
    @Excel(name = "组件路由")
    @JsonProperty(value = "compRouter")
    private String compRouter;

    /**
     * append
     */
    @Excel(name = "append")
    @JsonProperty(value = "append")
    private String append;

    /**
     * changeTag
     */
    @Excel(name = "changeTag")
    @JsonProperty(value = "changeTag")
    private String changeTag;

    /**
     * 能否清空
     */
    @Excel(name = "能否清空")
    @JsonProperty(value = "clearable")
    private String clearable;

    /**
     * 默认值
     */
    @Excel(name = "默认值")
    @JsonProperty(value = "defaultValue")
    private Object defaultValue;

    /**
     * 是否禁用
     */
    @Excel(name = "是否禁用")
    @JsonProperty(value = "disabled")
    private String disabled;

    /**
     * 表单组件ID
     */
    @Excel(name = "表单组件ID")
    @JsonProperty(value = "formId")
    private String formId;

    /**
     * 表单标题
     */
    @Excel(name = "表单标题")
    @JsonProperty(value = "label")
    private String label;


    @Excel(name = "标题长度")
    @JsonProperty(value = "labelWidth")
    private Integer labelWidth;

    /**
     * 布局方式
     */
    @Excel(name = "布局方式")
    @JsonProperty(value = "layout")
    private String layout;

    /**
     * 内容最大长度
     */
    @Excel(name = "内容最大长度")
    @JsonProperty(value = "maxlength")
    private Long maxlength;

    /**
     * 占位提示
     */
    @Excel(name = "占位提示")
    @JsonProperty(value = "placeholder")
    private String placeholder;

    /**
     * 内容前图标
     */
    @Excel(name = "内容前图标")
    @JsonProperty(value = "prefixIcon")
    private String prefixIcon;

    /**
     * 内容后图标
     */
    @Excel(name = "内容后图标")
    @JsonProperty(value = "suffixIcon")
    private String suffixIcon;

    /**
     * prepend
     */
    @Excel(name = "prepend")
    @JsonProperty(value = "prepend")
    private String prepend;

    /**
     * 是否只读
     */
    @Excel(name = "是否只读")
    @JsonProperty(value = "readonly")
    private String readonly;

    /**
     * 是否必填
     */
    @Excel(name = "是否必填")
    @JsonProperty(value = "required")
    private String required;

    /**
     * 禁用键盘
     */
    @Excel(name = "禁用键盘")
    @JsonProperty(value = "disableKeyboard")
    private String disableKeyboard;

    /**
     * ShowWordLimit
     */
    @Excel(name = "ShowWordLimit")
    @JsonProperty(value = "showWordLimit")
    private String showWordLimit;

    /**
     * 表单栅格
     */
    @Excel(name = "表单栅格")
    @JsonProperty(value = "span")
    private Long span;

    /**
     * 表单样式
     */
    @Excel(name = "表单样式")
    @JsonProperty(value = "style")
    private Object style;

    /**
     * 组件类型
     */
    @Excel(name = "组件类型")
    @JsonProperty(value = "tag")
    private String tag;

    /**
     * 组件图标
     */
    @Excel(name = "组件图标")
    @JsonProperty(value = "tagIcon")
    private String tagIcon;

    /**
     * 组件类型
     */
    @Excel(name = "组件类型")
    @JsonProperty(value = "moduleType")
    private String moduleType;

    /**
     * 字段名
     */
    @Excel(name = "字段名")
    @JsonProperty(value = "vModel")
    private String vModel;

    /**
     * 启用状态__0禁用_1启用
     */
    @Excel(name = "启用状态__0禁用_1启用")
    @JsonProperty(value = "isEnabled")
    private String isEnabled;

    /**
     * 创建用户
     */
    @Excel(name = "创建用户")
    @JsonProperty(value = "addUserId")
    private String addUserId;

    /**
     * 创建时间
     */
    @Excel(name = "创建时间")
    @JsonProperty(value = "addTime")
    private String addTime;

    /**
     * 编辑用户
     */
    @Excel(name = "编辑用户")
    @JsonProperty(value = "editUserId")
    private String editUserId;

    /**
     * 编辑时间
     */
    @Excel(name = "编辑时间")
    @JsonProperty(value = "editTime")
    private String editTime;

    /**
     * 删除标记__0删除，1未删除
     */
    @Excel(name = "删除标记__0删除，1未删除")
    @JsonProperty(value = "delMark")
    private String delMark;

    /**
     * 是否有子组件__0否，1是
     */
    @Excel(name = "是否有子组件__0否，1是")
    @JsonProperty(value = "hasChildren")
    private String hasChildren;

    /**
     * 表单父组件UUID
     */
    @Excel(name = "表单父组件UUID")
    @JsonProperty(value = "parentFormUuid")
    private String parentFormUuid;

    /**
     * 排序
     */
    @Excel(name = "排序")
    @JsonProperty(value = "sort")
    private Integer sort;

    /**
     * 层级
     */
    @Excel(name = "层级")
    @JsonProperty(value = "grade")
    private Integer grade;

    /**
     * 字典编码
     */
    @Excel(name = "字典编码")
    @JsonProperty(value = "optionDictCode")
    private String optionDictCode;

    /**
     * 允许上传
     */
    @Excel(name = "允许上传")
    @JsonProperty(value = "allowUpload")
    private String allowUpload;

    /**
     * 显示处理方式
     */
    @Excel(name = "显示处理方式")
    @JsonProperty(value = "showDealType")
    private String showDealType;

    /**
     * 显示分页
     */
    @Excel(name = "显示分页")
    @JsonProperty(value = "showPagination")
    private String showPagination;

    /**
     * 组件高度
     */
    @Excel(name = "组件高度")
    @JsonProperty(value = "tableHeight")
    private String tableHeight;

    /**
     * 流程分支标识
     */
    @Excel(name = "流程分支标识")
    @JsonProperty(value = "procBranchTag")
    private String procBranchTag;

    /**
     * 显示所有文件
     */
    @Excel(name = "显示所有文件")
    @JsonProperty(value = "showAllFile")
    private String showAllFile;

    /**
     * 请求URL前缀
     */
    @Excel(name = "请求URL前缀")
    @JsonProperty(value = "prefixUrl")
    private String prefixUrl;

    /**
     * 数据新增
     */
    @Excel(name = "数据新增")
    @JsonProperty(value = "allowAdd")
    private String allowAdd;

    /**
     * 数据修改
     */
    @Excel(name = "数据修改")
    @JsonProperty(value = "allowUpdate")
    private String allowUpdate;

    /**
     * 数据删除
     */
    @Excel(name = "数据删除")
    @JsonProperty(value = "allowDelete")
    private String allowDelete;

    /**
     * 数据导入
     */
    @Excel(name = "数据导入")
    @JsonProperty(value = "allowImport")
    private String allowImport;

    /**
     * 数据导出
     */
    @Excel(name = "数据导出")
    @JsonProperty(value = "allowExport")
    private String allowExport;

    /**
     * 按钮类型
     */
    @Excel(name = "按钮类型")
    @JsonProperty(value = "type")
    private String type;

    /**
     * 按钮图标
     */
    @Excel(name = "按钮图标")
    @JsonProperty(value = "icon")
    private String icon;

    /**
     * 按钮大小
     */
    @Excel(name = "按钮大小")
    @JsonProperty(value = "size")
    private String size;

    /**
     * 对话框标题
     */
    @Excel(name = "对话框标题")
    @JsonProperty(value = "dialogTitle")
    private String dialogTitle;

    /**
     * 对话框组件地址
     */
    @Excel(name = "对话框组件地址")
    @JsonProperty(value = "dialogPath")
    private String dialogPath;

    /**
     * 是否隐藏对话框按钮
     */
    @Excel(name = "是否隐藏对话框按钮")
    @JsonProperty(value = "dialogIsHideFooter")
    private String dialogIsHideFooter;

    /**
     * 对话框取消按钮名称
     */
    @Excel(name = "对话框取消按钮名称")
    @JsonProperty(value = "dialogCancelText")
    private String dialogCancelText;

    /**
     * 对话框确认按钮名称
     */
    @Excel(name = "对话框确认按钮名称")
    @JsonProperty(value = "dialogOkText")
    private String dialogOkText;

    /**
     * 对话框宽度
     */
    @Excel(name = "对话框宽度")
    @JsonProperty(value = "dialogWidth")
    private String dialogWidth;

    /**
     * 联动字段
     */
    @Excel(name = "联动字段")
    @JsonProperty(value = "linkVModel")
    private String linkVModel;

    /**
     * 联动请求URL
     */
    @Excel(name = "联动请求URL")
    @JsonProperty(value = "linkVModelOptionUrl")
    private String linkVModelOptionUrl;

    /**
     * 满足显示条件字段
     */
    @Excel(name = "满足显示条件字段")
    @JsonProperty(value = "meetShowVModel")
    private String meetShowVModel;

    /**
     * 满足显示条件字段值
     */
    @Excel(name = "满足显示条件字段值")
    @JsonProperty(value = "meetShowVModelVal")
    private String meetShowVModelVal;

    /**
     * 联动条件
     */
    @Excel(name = "联动条件")
    @JsonProperty(value = "linkVModelCondition")
    private String linkVModelCondition;

    /**
     * 数据拆分__针对需要被拆分的数据
     */
    @Excel(name = "数据拆分__针对需要被拆分的数据")
    @JsonProperty(value = "allowSelectLinkData")
    private String allowSelectLinkData;

    /**
     * 数据拆分条件
     */
    @Excel(name = "数据拆分条件")
    @JsonProperty(value = "dataSplitCondition")
    private String dataSplitCondition;

    /**
     * 开启值
     */
    @Excel(name = "开启值")
    @JsonProperty(value = "activeValue")
    private String activeValue;

    /**
     * 关闭值
     */
    @Excel(name = "关闭值")
    @JsonProperty(value = "inactiveValue")
    private String inactiveValue;

    /**
     * 是否多选
     */
    @Excel(name = "是否多选")
    @JsonProperty(value = "multiple")
    private String multiple;

    /**
     * 用户权限标识
     */
    @Excel(name = "用户权限标识")
    @JsonProperty(value = "visitPermission")
    private String visitPermission;

    /**
     * 排除展示列__针对数据表格维护不需要显示列
     */
    @Excel(name = "排除展示列__针对数据表格维护不需要显示列")
    @JsonProperty(value = "excludeShowColumn")
    private String excludeShowColumn;

    /**
     * 请求类型
     */
    @Excel(name = "请求类型")
    @JsonProperty(value = "linkVModelOptionReqType")
    private String linkVModelOptionReqType;


    /**
     * 子表服务类名
     */
    @Excel(name = "子表服务类名")
    @JsonProperty(value = "serviceName")
    private String serviceName;

    /**
     * 子表关联字段__存在子表的情况下
     */
    @Excel(name = "子表关联字段__存在子表的情况下")
    @JsonProperty(value = "foreignKey")
    private String foreignKey;

    /**
     * 主表关联字段__存在子表的情况下
     */
    @Excel(name = "主表关联字段__存在子表的情况下")
    @JsonProperty(value = "primaryTableKey")
    private String primaryTableKey;

    /**
     * 组件触发JS逻辑
     */
    @Excel(name = "组件触发JS逻辑")
    @JsonProperty(value = "triggerJavascript")
    private String triggerJavascript;

    /**
     * 组件配置Js
     */
    @Excel(name = "组件配置Js")
    @JsonProperty(value = "moduleConfigJs")
    private String moduleConfigJs;

    /**
     * 按钮JS逻辑
     */
    @Excel(name = "按钮JS逻辑")
    @JsonProperty(value = "btnJavascript")
    private String btnJavascript;

    /**
     * 按钮位置
     */
    @Excel(name = "按钮位置")
    @JsonProperty(value = "btnPosition")
    private String btnPosition;

    /**
     * 按钮请求URL
     */
    @Excel(name = "按钮请求URL")
    @JsonProperty(value = "btnRequestUrl")
    private String btnRequestUrl;

    /**
     * 按钮跳转路径
     */
    @Excel(name = "按钮跳转路径")
    @JsonProperty(value = "btnNavigatePath")
    private String btnNavigatePath;

    /**
     * 终端类型__PC_Mobile
     */
    @Excel(name = "终端类型")
    private String clientType;

    /**
     * 结果是否处理到其他值
     */
    @Excel(name = "结果是否处理到其他值")
    private String isAssignOtherModel;

    /**
     * 赋值类型
     */
    @Excel(name = "赋值类型")
    private String assignType;

    /**
     * 赋值字段
     */
    @Excel(name = "赋值字段")
    private String assignModel;

    /**
     * 是否回车清空当前
     */
    @Excel(name = "是否回车清空当前")
    private String isEnterClearShelf;

    /**
     * 搜索模块__针对搜索文本框时的配置
     */
    @Excel(name = "搜索模块__针对搜索文本框时的配置")
    private String searchModel;

    /**
     * 是否展示__数据查询区域，是否展示
     */
    @Excel(name = "是否展示__数据查询区域，是否展示")
    private String isQuery;

    /**
     * 查询方式
     */
    @Excel(name = "查询方式")
    private String queryType;

    /**
     * 列表展示__数据列表中是否展示
     */
    @Excel(name = "列表展示")
    private String isListShow;

    /**
     * 列表宽度
     */
    @Excel(name = "列表宽度")
    private String listColumnWidth;

    /**
     * 对齐方式__left/center/right
     */
    @Excel(name = "对齐方式")
    private String listColumnAlign;

    /**
     * 多行文本框，行数设置
     * autosize="{ minRows: 2, maxRows: 4}"
     */
    @Excel(name = "对齐方式")
    private String autosizeObj;
    @TableField(exist = false)
    private Object autosize;

    /**
     * 时间日期格式
     * 如：yyyy-MM-dd HH:mm:ss
     */
    @Excel(name = "时间日期格式")
    private String format;

    /**
     * 校验规则
     */
    @Valid
    @JsonProperty(value = "regList")
    private List<FromBuildRuleConfig> regList;
    /**
     * 选项值
     */
    @Valid
    @JsonProperty(value = "options")
    private List<FromBuildOptionsConfig> options;
    /**
     * 子组件
     */
    @Valid
    @JsonProperty(value = "children")
    private List<FromBuildConfig> children;

}
